import cv2
import numpy as np

# 读取原图和模板图
img = cv2.imread('Football_player.jpg')
template = cv2.imread('light.jpg')

# 转为灰度图（关键：确保模板和原图维度一致）
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
template_gray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)  # 模板转为灰度图

# 获取模板的宽度和高度（此时为二维，避免维度错误）
w, h = template_gray.shape[::-1]

# 进行模板匹配，使用归一化相关系数方法
res = cv2.matchTemplate(img_gray, template_gray, cv2.TM_CCOEFF_NORMED)

# 设置匹配阈值（可根据效果调整，值越小匹配越多，可能引入误检）
threshold = 0.8
loc = np.where(res >= threshold)

# 标记所有匹配的光斑
for pt in zip(*loc[::-1]):
    cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)

# 显示结果并保存
cv2.imshow('Matching Result', img)
cv2.imwrite('result.jpg', img)
cv2.waitKey(0)
